package com.demo;

/**
 * @Author 56465
 * @Create 2024/7/30 9:38
 */
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.stage.Stage;

public class TextFlowExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        TextArea textArea = new TextArea();

        // 监听键盘事件
        textArea.setOnKeyPressed(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent event) {
                if (event.isShiftDown() && event.getCode() == KeyCode.DIGIT3) {
                    // 获取当前文本
                    String text = textArea.getText();
                    System.out.println("text = " + text);
                    // 获取光标位置
                    int caretPosition = textArea.getCaretPosition();

                    // 在光标位置插入标记和#号
                    StringBuilder sb = new StringBuilder(text);
                    sb.insert(caretPosition, "<h1></h1>");

                    System.out.println("sb = " + sb);
                    // 更新文本和光标位置（将光标移动到#号后面）
                    textArea.setText(sb.toString());
                    textArea.positionCaret(caretPosition + 4); // [h1]# 的长度是5

                    // 阻止默认的#号输入（但在这个情况下，由于我们是直接处理按键，所以不需要）
                    // event.consume(); // 通常不需要，因为我们没有使用event.getCharacter()
                }
            }
        });

        // 设置场景和舞台
        Scene scene = new Scene(textArea, 400, 300);
        primaryStage.setTitle("TextArea Hash Tag Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}